/*
	File:		MessageSystem.cpp
	Author:		Ben Feldmann
	Purpose:	Handles messages sent in the game	
*/

#include "MessageSystem.h"


MessageSystem* MessageSystem::GetInstance() 
{
	//return messageSystem;
	static MessageSystem instance;
	return &instance;
}

void MessageSystem::InitMessageSystem(MESSAGEPROC newMsgProc) 
{
	if(newMsgProc == nullptr)
		return;
	
	msgProc = newMsgProc;
}

void MessageSystem::SendMsg(Message* msg) 
{
	if(msg == nullptr)
		return;

	messages.push(msg);
}

void MessageSystem::ProcessMessages() 
{
	if(msgProc == nullptr)	
		return;

	while(!messages.empty())
	{
		msgProc(messages.front());							
		delete reinterpret_cast<Message*>(messages.front());	
		messages.pop();											
	}
}

void MessageSystem::ClearMessages() 
{
	while(!messages.empty())
	{
		delete reinterpret_cast<Message*>(messages.front());	
		messages.pop();											
	}
}

void MessageSystem::ShutdownMessageSystem() 
{
	ClearMessages();

	msgProc = nullptr;
}